<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>22.iterator迭代器方法玩转数组</title>
</head>

<body>
  <script>
    // 获得索引
    let arr = ['hdcms', 'houdunren'];
    // 获得全部 keys 活着values 迭代
    let keys = arr.keys();
    let values = arr.values();
    //console.log(keys.next()); // {value: 0, done: false}  value 索引， doen： 是否迭代完成
    // for(const key of arr.keys()){
    // console.log(key);
    //}
    // 使用展开语法读取
    // let { value, done } = keys.next();
    // console.log(value,done);
    //  while 遍历，() 要包裹展开语法，不然 done === false 会先执行
    //while(({value,done} = values.next()) && done === false) {
    //  console.log(value);
    // }
    // for of 遍历， 获得value的值（不会获得done的值）
    // for(const value of arr.values()){
    //  console.log(value);
    // }
    // for of 遍历，获得 key的值,也就是索引 （不会获得done的值）
    //for(const key of arr.keys()){
    //  console.log(key);
    //}

    // 获得迭代对象
    //let entries = arr.entries();
    //console.log(entries);// Array Iterator {}[[Prototype]]: Array Iterator
    //console.log(entries.next());//  value 变成数组形式：{value: Array(2), done: false}  
    //done: false
    // value: (2)[0, 'hdcms']   value包含索引和数组的值，也就是values()和keys()方法的综合
    //let {done,value:[a,b]} = arr.entries().next();
    //console.log(a,b); // 0 ,hdcms
    for(const [key,value] of arr.entries()){
      console.log(value);
    }
  </script>
</body>

</html>